package com.zwh.algorithm.foundation;

/**
 * 记录一些简单的算法题
 */
public class Foundation1 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3,60,80};
        System.out.println(charge(5, arr));
        System.out.println(addition(5, 3));
        System.out.println(reversal("fZswC"));
    }


    /**
     * 定义了一个函数 digit(x,i) ，表示分离出 x 的后 i 位的数字。
     */
    public static int digit(int x,int i){
        String s = String.valueOf(x);
        s = s.substring(s.length()-i);
        return Integer.valueOf(s);
    }
    /**
     * 尝试把一个整数逆序地输出。
     */
    public static int reverse (int x){
        String s = String.valueOf(x);
        System.out.println(s);
        char[] c = s.toCharArray();
        System.out.println(c);
        String a = "";
        for (int i = s.length()-1; i >= 0; i--) {
            a +=c[i];
        }
        System.out.println(a);
        return Integer.valueOf(a);
    }

    /**
     * 牛牛很喜欢发短信，他所用的通讯公司的收费方法如下：
     * 1.每条短信收费0.1元
     * 2.每条短息的字数不超过60字，如果超过60字，将按照0.2元的价格收费。
     * 牛牛这个月发了 n 条短信，请问牛牛一共要缴多少短信费
     * 输入描述:
     * 第一行输入一个正整数 n ，表示发送短信的条数，
     * 第二行输入 n 个正整数，表示牛牛发送的 n 条短信中每条短信的字数。
     */
    public static float charge (int n,int[] y){
        float sum = 0;
        for (int i : y) {
            if (i>60){
                sum+=0.2;
            }else{
                sum+=0.1;
            }
        }
        return sum;
    }

    /**
     * 假设 n= 3 ,则方法的值为a+aa+aaa;
     * @param a:1-9
     * @param n
     * @return
     */
    public static int addition(int a,int n){
        int sum = 0;
        for (int i = n; i > 0; i--) {
            sum+= a*i*(Math.pow(10,(n-i)));
            System.out.println(sum);
        }
        System.out.println(sum);
        return sum;
    }
    /**
     * 将字符串反转后，大写变小写，小写变大写
     */
    public static String reversal(String str){
        StringBuffer sb = new StringBuffer();
        if(str!=null){
            for(int i=str.length()-1;i>=0;i--){
                char c = str.charAt(i);
                if(Character.isUpperCase(c)){
                    sb.append(Character.toLowerCase(c));
                }else if(Character.isLowerCase(c)){
                    sb.append(Character.toUpperCase(c));
                }
            }
        }
        return sb.toString();
    }
}
